/*
 * base.h
 *
 * This header file contains all the common header files
 * we need.
 * 
 * Note that even though this is an Objective C project, which
 * is typically identified as being a Mac-specific thing, that
 * is not, in fact, the truth; GCC can have the ObjC "personality"
 * compiled into it, regardless of platform. Thus for *maximum*
 * compatibility, we'll make sure we're good platform citizens
 * and not assume this is simply a Mac.
 */


/*
 * Our Objective C-based imports. Because we want to keep everything
 * clean for any platform, we will use very little built-in functionality,
 * because it's only "built in" for the Mac (and I guess wherever GNUStep
 * is also installed.
 */
#ifdef __APPLE__
# import <Foundation/NSObject.h>
/* 
 * To preserve compatibility, and because we are concentrating
 * on Objective C, the language, and not Cocoa with its frameworks,
 * we define ``Object'' as an NSObject so that we can compile
 * cleanly on any platform
 */
# define Object NSObject
#else 
/*
 * This block is for compiling the program on a non-Apple platform.
 * Note that only gcc with lang=objc was tested (are there others?)
 */
# import <objc/Object.h>
# import <objc/NXConstStr.h>
/* 
 * For some reason, the GNU interface to Object eschews both
 * dealloc and release and instead uses "free". So for right
 * now we'll replace our instances of dealloc and release
 * with free when compiling under gcc on a non-Apple machine.
 *
 * Note! I haven't tested any of this on a machine where GNUStep
 * is installed; I presume they use headers that are closer to
 * the Apple versions, in which case more work would be necessary
 * to determine this, and if installed, use the GNUStep version.
 */
# define release free
# define dealloc free
#endif

/*
 * General C includes here
 */
#include <stdio.h>

